mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2026-08-15 13:04:36 +00:00
Merge pull request #15 from milutinke/copilot/create-csharp-optimization-skill
This commit is contained in:
commit
d6aa9d101f
19 changed files with 1664 additions and 0 deletions
268
.skills/csharp-optimization/SKILL.md
Normal file
268
.skills/csharp-optimization/SKILL.md
Normal file
|
|
@ -0,0 +1,268 @@
|
||||||
|
---
|
||||||
|
name: csharp-optimization
|
||||||
|
description: >-
|
||||||
|
Use when optimizing C# code in MCC, reducing GC pressure, profiling hot paths,
|
||||||
|
fixing latency spikes, or reviewing code for allocation or throughput issues.
|
||||||
|
metadata:
|
||||||
|
category: technique
|
||||||
|
triggers: performance, allocations, GC, hot path, latency, throughput,
|
||||||
|
memory pressure, optimize, slow, freeze, lag spike, packet processing speed
|
||||||
|
version: 0.2.0
|
||||||
|
---
|
||||||
|
|
||||||
|
# C# Performance Optimization for MCC
|
||||||
|
|
||||||
|
Hands-on optimization recipes for Minecraft Console Client hot paths.
|
||||||
|
Complements `csharp-best-practices` (conventions) with measurement-driven
|
||||||
|
performance work.
|
||||||
|
|
||||||
|
## When to Use
|
||||||
|
|
||||||
|
- Profiling or reducing GC pressure in a running MCC session
|
||||||
|
- Optimizing per-packet code (`Protocol18.HandlePacket`, `DataTypes.ReadNext*`)
|
||||||
|
- Optimizing per-tick code (`PlayerPhysics.Tick`, `CollisionDetector.Collide`)
|
||||||
|
- Speeding up chunk decoding (`Protocol18Terrain.ProcessChunkColumnData`)
|
||||||
|
- Improving A* pathfinding (`Movement.CalculatePath`)
|
||||||
|
- Reviewing any code change for allocation or throughput regressions
|
||||||
|
|
||||||
|
**NOT for:**
|
||||||
|
- Login, config parsing, or one-shot command handlers (prefer clarity there)
|
||||||
|
- Style/convention questions (use `csharp-best-practices` instead)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Iron Rule: Measure First
|
||||||
|
|
||||||
|
**NEVER optimize without profiling data.**
|
||||||
|
|
||||||
|
Guessing which code is slow is wrong more often than right. Measure, change,
|
||||||
|
re-measure. If you cannot show a before/after number, the optimization is not
|
||||||
|
justified.
|
||||||
|
|
||||||
|
| Rationalization | Reality |
|
||||||
|
|-----------------|---------|
|
||||||
|
| "This is obviously slow" | Obvious to you is not obvious to the JIT. Measure. |
|
||||||
|
| "I'll profile later" | Later never comes. Profile now or don't optimize. |
|
||||||
|
| "It's just one allocation" | On a 20 TPS tick, one allocation = 20 per second = GC pressure. Measure. |
|
||||||
|
| "AggressiveInlining everywhere" | The JIT already inlines small methods. Prove it helps before adding. |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## MCC Hot-Path Map
|
||||||
|
|
||||||
|
Know which code runs at which frequency before deciding where to invest:
|
||||||
|
|
||||||
|
| Frequency | Key paths (actual files) | Priority |
|
||||||
|
|---|---|---|
|
||||||
|
| Per-packet (100s/sec) | `Protocol/Handlers/Protocol18.cs` HandlePacket, `Protocol/Handlers/DataTypes.cs` ReadNext* | **High** |
|
||||||
|
| Per-tick (20/sec) | `Physics/PlayerPhysics.cs` Tick, `Physics/CollisionDetector.cs` Collide, ChatBot `Update()` | **High** |
|
||||||
|
| Per-chunk-load | `Protocol/Handlers/Protocol18Terrain.cs` ProcessChunkColumnData, ReadBlockStatesField | Medium |
|
||||||
|
| Per-pathfind | `Mapping/Movement.cs` CalculatePath (A*) | Medium |
|
||||||
|
| Per-connection | Login, registry sync, config | Low |
|
||||||
|
| Per-user-action | Commands, chat | Low |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Profiling Recipes
|
||||||
|
|
||||||
|
### 1. Live GC monitoring
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dotnet-counters ps # find MinecraftClient PID
|
||||||
|
dotnet-counters monitor --process-id <PID> \
|
||||||
|
--counters System.Runtime[gen-0-gc-count,gen-1-gc-count,gen-2-gc-count,alloc-rate]
|
||||||
|
```
|
||||||
|
|
||||||
|
Healthy idle MCC: near-zero Gen-1/Gen-2 collections. Frequent Gen-0 during idle
|
||||||
|
means a hot-path allocation needs attention.
|
||||||
|
|
||||||
|
### 2. Allocation tracking
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dotnet-trace collect --process-id <PID> \
|
||||||
|
--providers Microsoft-Windows-DotNETRuntime:0x1:5
|
||||||
|
```
|
||||||
|
|
||||||
|
Open `.nettrace` in PerfView to find top-allocated types and call stacks.
|
||||||
|
|
||||||
|
### 3. Isolated benchmarks (BenchmarkDotNet)
|
||||||
|
|
||||||
|
Extract the hot method, add `[MemoryDiagnoser]`. Key columns: **Mean**,
|
||||||
|
**Allocated**, **Gen0**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Allocation Reduction (Highest Impact)
|
||||||
|
|
||||||
|
Reducing GC pressure directly reduces latency spikes in a long-running client.
|
||||||
|
|
||||||
|
### Pattern: Reuse per-tick buffers
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// BEFORE: new List every tick (20 allocations/sec)
|
||||||
|
var result = new List<Aabb>();
|
||||||
|
|
||||||
|
// AFTER: thread-local reuse (0 allocations/sec)
|
||||||
|
[ThreadStatic] private static List<Aabb>? t_buf;
|
||||||
|
var result = t_buf ??= new List<Aabb>(64);
|
||||||
|
result.Clear();
|
||||||
|
```
|
||||||
|
|
||||||
|
`[ThreadStatic]` works when single-threaded and non-reentrant (physics tick).
|
||||||
|
If reentrant: use `ObjectPool<T>`. If cross-thread: use `ArrayPool<T>`.
|
||||||
|
|
||||||
|
### Pattern: stackalloc for small fixed buffers
|
||||||
|
|
||||||
|
MCC already does this in `DataTypes.cs` for endian-swapped reads:
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
Span<byte> rawValue = stackalloc byte[8];
|
||||||
|
for (int i = 7; i >= 0; --i) rawValue[i] = cache.Dequeue();
|
||||||
|
return BitConverter.ToDouble(rawValue);
|
||||||
|
```
|
||||||
|
|
||||||
|
Rules: under 512 bytes, known size at compile time, never inside loops or recursion.
|
||||||
|
|
||||||
|
### Pattern: Span slicing instead of array copies
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// BEFORE: allocates
|
||||||
|
byte[] sub = new byte[length];
|
||||||
|
Array.Copy(source, offset, sub, 0, length);
|
||||||
|
|
||||||
|
// AFTER: zero-copy
|
||||||
|
ReadOnlySpan<byte> sub = source.AsSpan(offset, length);
|
||||||
|
```
|
||||||
|
|
||||||
|
Critical in packet parsing where many fields are sliced from one buffer.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Hot-Path Tuning
|
||||||
|
|
||||||
|
### MethodImpl attributes
|
||||||
|
|
||||||
|
MCC uses `[MethodImpl]` on its hottest paths. Match the attribute to the method:
|
||||||
|
|
||||||
|
| Attribute | When | MCC examples |
|
||||||
|
|---|---|---|
|
||||||
|
| `AggressiveInlining` | Tiny methods (< ~32 bytes IL), called millions of times | `Vec3d.Add`, `Aabb.Intersects`, `Chunk.SetWithoutCheck` |
|
||||||
|
| `AggressiveOptimization` | Larger critical-path methods | `ReadBlockStatesField`, `ProcessChunkColumnData` |
|
||||||
|
| Both | Medium methods, very high frequency | `DataTypes.ReadNextVarInt`, `ReadDataReverse` |
|
||||||
|
| Neither | Infrequent code | Login, config, commands |
|
||||||
|
|
||||||
|
**Do not scatter `AggressiveInlining` without profiling evidence.** The JIT
|
||||||
|
already inlines small methods.
|
||||||
|
|
||||||
|
### BinaryPrimitives over BitConverter
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// BEFORE: manual endian swap
|
||||||
|
(buf[0], buf[3]) = (buf[3], buf[0]);
|
||||||
|
int val = BitConverter.ToInt32(buf);
|
||||||
|
|
||||||
|
// AFTER: direct big-endian read, no branch
|
||||||
|
int val = BinaryPrimitives.ReadInt32BigEndian(buf);
|
||||||
|
```
|
||||||
|
|
||||||
|
### MemoryMarshal for bulk reads
|
||||||
|
|
||||||
|
Already used in chunk decoding for zero-copy packed-long reads:
|
||||||
|
```csharp
|
||||||
|
ReadOnlySpan<long> longs = MemoryMarshal.Cast<byte, long>(entryData);
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Data Structure Selection
|
||||||
|
|
||||||
|
### Frozen collections for palettes
|
||||||
|
|
||||||
|
Palette maps are built once and read millions of times. `FrozenDictionary`
|
||||||
|
gives ~50% faster reads than `Dictionary`:
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
private static readonly FrozenDictionary<int, Material> s_palette =
|
||||||
|
new Dictionary<int, Material> { ... }.ToFrozenDictionary();
|
||||||
|
```
|
||||||
|
|
||||||
|
Apply to: `BlockPalettes/*.cs`, `EntityPalettes/*.cs`, `ItemPalettes/*.cs`,
|
||||||
|
`PacketPalettes/*.cs`, any `static readonly Dictionary` populated once.
|
||||||
|
|
||||||
|
### PriorityQueue for A*
|
||||||
|
|
||||||
|
`Movement.cs` has a custom `BinaryHeap`. The built-in `PriorityQueue<TElement,
|
||||||
|
TPriority>` (.NET 6+) is well-optimized and avoids maintenance burden.
|
||||||
|
|
||||||
|
### ConcurrentDictionary sizing
|
||||||
|
|
||||||
|
Pre-size `World.chunks` to avoid rehashing:
|
||||||
|
```csharp
|
||||||
|
new ConcurrentDictionary<(int, int), ChunkColumn>(
|
||||||
|
concurrencyLevel: Environment.ProcessorCount, capacity: 1024);
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Threading
|
||||||
|
|
||||||
|
### Minimize lock scope
|
||||||
|
|
||||||
|
Copy data out under the lock, process outside:
|
||||||
|
```csharp
|
||||||
|
List<Item> snapshot;
|
||||||
|
lock (_lock) { snapshot = [.. _items]; }
|
||||||
|
foreach (var item in snapshot) ExpensiveProcess(item);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Batch InvokeOnMainThread
|
||||||
|
|
||||||
|
Each `InvokeOnMainThread()` call blocks until the main thread runs it.
|
||||||
|
In loops, batch into a single call:
|
||||||
|
```csharp
|
||||||
|
handler.InvokeOnMainThread(() =>
|
||||||
|
{
|
||||||
|
foreach (var entity in entities) UpdateEntity(entity);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
### Channel\<T\> over BlockingCollection\<T\>
|
||||||
|
|
||||||
|
Lower overhead, async-friendly:
|
||||||
|
```csharp
|
||||||
|
var ch = Channel.CreateUnbounded<(int Id, Memory<byte> Data)>(
|
||||||
|
new UnboundedChannelOptions { SingleReader = true });
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Common Optimization Anti-Patterns
|
||||||
|
|
||||||
|
These are things agents (and humans) rationalize doing. Every one of them
|
||||||
|
makes performance worse or wastes effort.
|
||||||
|
|
||||||
|
| Anti-pattern | Why it's wrong |
|
||||||
|
|---|---|
|
||||||
|
| Adding `AggressiveInlining` to large methods | Bloats call sites, causes more cache misses, makes code *slower* |
|
||||||
|
| Optimizing login/config code | Runs once per session; clarity matters more than speed |
|
||||||
|
| Using `ConcurrentDictionary` where a plain `Dictionary` + lock suffices | Concurrent overhead on uncontested paths costs more than a lock |
|
||||||
|
| Replacing LINQ with manual loops on cold paths | No measurable gain, worse readability |
|
||||||
|
| Caching mutable state to avoid re-reads | Stale cache bugs are harder to diagnose than the perf hit |
|
||||||
|
| `Task.Result` / `.Wait()` on hot paths | Deadlock risk and thread-pool starvation |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Pre-Commit Checklist
|
||||||
|
|
||||||
|
ALWAYS verify before submitting a performance change:
|
||||||
|
|
||||||
|
- [ ] Hot path identified with profiling data, not guesswork
|
||||||
|
- [ ] Before/after measurements recorded (allocation count, throughput, or latency)
|
||||||
|
- [ ] No new allocations inside per-tick or per-packet methods
|
||||||
|
- [ ] `[MethodImpl]` attributes match method call frequency and IL size
|
||||||
|
- [ ] Frozen collections used for any static lookup table
|
||||||
|
- [ ] Lock scopes contain no I/O or expensive work
|
||||||
|
- [ ] No `Task.Result`, `.Wait()`, or `GetAwaiter().GetResult()` on hot paths
|
||||||
|
- [ ] Thread safety preserved (checked existing lock/concurrent patterns)
|
||||||
|
- [ ] Optimization comments explain non-obvious choices
|
||||||
|
- [ ] Code still compiles and passes all existing checks
|
||||||
101
.skills/writing-skills/SKILL.md
Normal file
101
.skills/writing-skills/SKILL.md
Normal file
|
|
@ -0,0 +1,101 @@
|
||||||
|
---
|
||||||
|
name: writing-skills
|
||||||
|
description: "Use when creating, updating, or improving agent skills."
|
||||||
|
category: meta
|
||||||
|
risk: unknown
|
||||||
|
source: community
|
||||||
|
date_added: "2026-02-27"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Writing Skills (Excellence)
|
||||||
|
|
||||||
|
Dispatcher for skill creation excellence. Use the decision tree below to find the right template and standards.
|
||||||
|
|
||||||
|
## Quick Decision Tree
|
||||||
|
|
||||||
|
### What do you need to do?
|
||||||
|
|
||||||
|
1. **Create a NEW skill:**
|
||||||
|
- Is it simple (single file, <200 lines)? -> [Tier 1 Architecture](references/tier-1-simple/README.md)
|
||||||
|
- Is it complex (multi-concept, 200-1000 lines)? -> [Tier 2 Architecture](references/tier-2-expanded/README.md)
|
||||||
|
- Is it a massive platform (10+ products, AWS, Convex)? -> [Tier 3 Architecture](references/tier-3-platform/README.md)
|
||||||
|
|
||||||
|
2. **Improve an EXISTING skill:**
|
||||||
|
- Fix "it's too long" -> [Modularize (Tier 3)](references/templates/tier-3-platform.md)
|
||||||
|
- Fix "AI ignores rules" -> [Anti-Rationalization](references/anti-rationalization/README.md)
|
||||||
|
- Fix "users can't find it" -> [CSO (Search Optimization)](references/cso/README.md)
|
||||||
|
|
||||||
|
3. **Verify Compliance:**
|
||||||
|
- Check metadata/naming -> [Standards](references/standards/README.md)
|
||||||
|
- Add tests -> [Testing Guide](references/testing/README.md)
|
||||||
|
|
||||||
|
## Component Index
|
||||||
|
|
||||||
|
| Component | Purpose |
|
||||||
|
|-----------|---------|
|
||||||
|
| **[CSO](references/cso/README.md)** | "SEO for LLMs". How to write descriptions that trigger. |
|
||||||
|
| **[Standards](references/standards/README.md)** | File naming, YAML frontmatter, directory structure. |
|
||||||
|
| **[Anti-Rationalization](references/anti-rationalization/README.md)**| How to write rules that agents won't ignore. |
|
||||||
|
| **[Testing](references/testing/README.md)** | How to ensure your skill actually works. |
|
||||||
|
|
||||||
|
## Templates
|
||||||
|
|
||||||
|
- [Technique Skill](references/templates/technique.md) (How-to)
|
||||||
|
- [Reference Skill](references/templates/reference.md) (Docs)
|
||||||
|
- [Discipline Skill](references/templates/discipline.md) (Rules)
|
||||||
|
- [Pattern Skill](references/templates/pattern.md) (Design Patterns)
|
||||||
|
|
||||||
|
## When to Use
|
||||||
|
- Creating a NEW skill from scratch
|
||||||
|
- Improving an EXISTING skill that agents ignore
|
||||||
|
- Debugging why a skill isn't being triggered
|
||||||
|
- Standardizing skills across a team
|
||||||
|
|
||||||
|
## How It Works
|
||||||
|
|
||||||
|
1. **Identify goal** -> Use decision tree above
|
||||||
|
2. **Select template** -> From `references/templates/`
|
||||||
|
3. **Apply CSO** -> Optimize description for discovery
|
||||||
|
4. **Add anti-rationalization** -> For discipline skills
|
||||||
|
5. **Test** -> RED-GREEN-REFACTOR cycle
|
||||||
|
|
||||||
|
## Quick Example
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
name: my-technique
|
||||||
|
description: Use when [specific symptom occurs].
|
||||||
|
metadata:
|
||||||
|
category: technique
|
||||||
|
triggers: error-text, symptom, tool-name
|
||||||
|
---
|
||||||
|
|
||||||
|
# My Technique
|
||||||
|
|
||||||
|
## When to Use
|
||||||
|
- [Symptom A]
|
||||||
|
- [Error message]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Common Mistakes
|
||||||
|
|
||||||
|
| Mistake | Fix |
|
||||||
|
|---------|-----|
|
||||||
|
| Description summarizes workflow | Use "Use when..." triggers only |
|
||||||
|
| No `metadata.triggers` | Add 3+ keywords |
|
||||||
|
| Generic name ("helper") | Use gerund (`creating-skills`) |
|
||||||
|
| Long monolithic SKILL.md | Split into `references/` |
|
||||||
|
|
||||||
|
See [gotchas.md](gotchas.md) for more.
|
||||||
|
|
||||||
|
## Pre-Deploy Checklist
|
||||||
|
|
||||||
|
Before deploying any skill:
|
||||||
|
|
||||||
|
- [ ] `name` field matches directory name exactly
|
||||||
|
- [ ] `SKILL.md` filename is ALL CAPS
|
||||||
|
- [ ] Description starts with "Use when..."
|
||||||
|
- [ ] `metadata.triggers` has 3+ keywords
|
||||||
|
- [ ] Total lines < 500 (use `references/` for more)
|
||||||
|
- [ ] No `@` force-loading in cross-references
|
||||||
|
- [ ] Tested with real scenarios
|
||||||
236
.skills/writing-skills/examples.md
Normal file
236
.skills/writing-skills/examples.md
Normal file
|
|
@ -0,0 +1,236 @@
|
||||||
|
# Skill Templates & Examples
|
||||||
|
|
||||||
|
Complete, copy-paste templates for each skill type.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Template: Technique Skill
|
||||||
|
|
||||||
|
For how-to guides that teach a specific method.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
name: technique-name
|
||||||
|
description: >-
|
||||||
|
Use when [specific symptom].
|
||||||
|
metadata:
|
||||||
|
category: technique
|
||||||
|
triggers: error-text, symptom, tool-name
|
||||||
|
---
|
||||||
|
|
||||||
|
# Technique Name
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
[1-2 sentence core principle]
|
||||||
|
|
||||||
|
## When to Use
|
||||||
|
|
||||||
|
- [Symptom A]
|
||||||
|
- [Symptom B]
|
||||||
|
- [Error message text]
|
||||||
|
|
||||||
|
**NOT for:**
|
||||||
|
- [When to avoid]
|
||||||
|
|
||||||
|
## The Problem
|
||||||
|
|
||||||
|
\`\`\`javascript
|
||||||
|
// Bad example
|
||||||
|
function badCode() {
|
||||||
|
// problematic pattern
|
||||||
|
}
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
## The Solution
|
||||||
|
|
||||||
|
\`\`\`javascript
|
||||||
|
// Good example
|
||||||
|
function goodCode() {
|
||||||
|
// improved pattern
|
||||||
|
}
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
## Step-by-Step
|
||||||
|
|
||||||
|
1. [First step]
|
||||||
|
2. [Second step]
|
||||||
|
3. [Final step]
|
||||||
|
|
||||||
|
## Quick Reference
|
||||||
|
|
||||||
|
| Scenario | Approach |
|
||||||
|
|----------|----------|
|
||||||
|
| Case A | Solution A |
|
||||||
|
| Case B | Solution B |
|
||||||
|
|
||||||
|
## Common Mistakes
|
||||||
|
|
||||||
|
**Mistake 1:** [Description]
|
||||||
|
- Wrong: \`bad code\`
|
||||||
|
- Right: \`good code\`
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Template: Reference Skill
|
||||||
|
|
||||||
|
For documentation, APIs, and lookup tables.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
name: reference-name
|
||||||
|
description: >-
|
||||||
|
Use when working with [domain].
|
||||||
|
metadata:
|
||||||
|
category: reference
|
||||||
|
triggers: tool, api, specific-terms
|
||||||
|
---
|
||||||
|
|
||||||
|
# Reference Name
|
||||||
|
|
||||||
|
## Quick Reference
|
||||||
|
|
||||||
|
| Command | Purpose |
|
||||||
|
|---------|---------|
|
||||||
|
| \`cmd1\` | Does X |
|
||||||
|
| \`cmd2\` | Does Y |
|
||||||
|
|
||||||
|
## Common Patterns
|
||||||
|
|
||||||
|
**Pattern A:**
|
||||||
|
\`\`\`bash
|
||||||
|
example command
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
**Pattern B:**
|
||||||
|
\`\`\`bash
|
||||||
|
another example
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
## Detailed Docs
|
||||||
|
|
||||||
|
For more options, run \`--help\` or see:
|
||||||
|
- patterns.md
|
||||||
|
- [examples.md](examples.md)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Template: Discipline Skill
|
||||||
|
|
||||||
|
For rules that agents must follow. Requires anti-rationalization techniques.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
name: discipline-name
|
||||||
|
description: >-
|
||||||
|
Use when [BEFORE violation].
|
||||||
|
metadata:
|
||||||
|
category: discipline
|
||||||
|
triggers: new feature, code change, implementation
|
||||||
|
---
|
||||||
|
|
||||||
|
# Rule Name
|
||||||
|
|
||||||
|
## Iron Law
|
||||||
|
|
||||||
|
**[SINGLE SENTENCE ABSOLUTE RULE]**
|
||||||
|
|
||||||
|
Violating the letter IS violating the spirit.
|
||||||
|
|
||||||
|
## The Rule
|
||||||
|
|
||||||
|
1. ALWAYS [step 1]
|
||||||
|
2. NEVER [step 2]
|
||||||
|
3. [Step 3]
|
||||||
|
|
||||||
|
## Violations
|
||||||
|
|
||||||
|
[Action before rule]? **Delete it. Start over.**
|
||||||
|
|
||||||
|
**No exceptions:**
|
||||||
|
- Don't keep it as "reference"
|
||||||
|
- Don't "adapt" it
|
||||||
|
- Delete means delete
|
||||||
|
|
||||||
|
## Common Rationalizations
|
||||||
|
|
||||||
|
| Excuse | Reality |
|
||||||
|
|--------|---------|
|
||||||
|
| "Too simple" | Simple code breaks. Rule takes 30 seconds. |
|
||||||
|
| "I'll do it after" | After = never. Do it now. |
|
||||||
|
| "Spirit not ritual" | The ritual IS the spirit. |
|
||||||
|
|
||||||
|
## Red Flags - STOP
|
||||||
|
|
||||||
|
- [Flag 1]
|
||||||
|
- [Flag 2]
|
||||||
|
- "This is different because..."
|
||||||
|
|
||||||
|
**All mean:** Delete. Start over.
|
||||||
|
|
||||||
|
## Valid Exceptions
|
||||||
|
|
||||||
|
- [Exception 1]
|
||||||
|
- [Exception 2]
|
||||||
|
|
||||||
|
**Everything else:** Follow the rule.
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Template: Pattern Skill
|
||||||
|
|
||||||
|
For mental models and design patterns.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
name: pattern-name
|
||||||
|
description: >-
|
||||||
|
Use when [recognizable symptom].
|
||||||
|
metadata:
|
||||||
|
category: pattern
|
||||||
|
triggers: complexity, hard-to-follow, nested
|
||||||
|
---
|
||||||
|
|
||||||
|
# Pattern Name
|
||||||
|
|
||||||
|
## The Pattern
|
||||||
|
|
||||||
|
[1-2 sentence core idea]
|
||||||
|
|
||||||
|
## Recognition Signs
|
||||||
|
|
||||||
|
- [Sign that pattern applies]
|
||||||
|
- [Another sign]
|
||||||
|
- [Code smell]
|
||||||
|
|
||||||
|
## Before
|
||||||
|
|
||||||
|
\`\`\`typescript
|
||||||
|
// Complex/problematic
|
||||||
|
function before() {
|
||||||
|
// nested, confusing
|
||||||
|
}
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
## After
|
||||||
|
|
||||||
|
\`\`\`typescript
|
||||||
|
// Clean/improved
|
||||||
|
function after() {
|
||||||
|
// flat, clear
|
||||||
|
}
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
## When NOT to Use
|
||||||
|
|
||||||
|
- [Over-engineering case]
|
||||||
|
- [Simple case that doesn't need it]
|
||||||
|
|
||||||
|
## Impact
|
||||||
|
|
||||||
|
**Before:** [Problem metric]
|
||||||
|
**After:** [Improved metric]
|
||||||
|
```
|
||||||
175
.skills/writing-skills/gotchas.md
Normal file
175
.skills/writing-skills/gotchas.md
Normal file
|
|
@ -0,0 +1,175 @@
|
||||||
|
---
|
||||||
|
description: Common pitfalls and tribal knowledge for skill creation.
|
||||||
|
metadata:
|
||||||
|
tags: [gotchas, troubleshooting, mistakes]
|
||||||
|
---
|
||||||
|
|
||||||
|
# Skill Writing Gotchas
|
||||||
|
|
||||||
|
Tribal knowledge to avoid common mistakes.
|
||||||
|
|
||||||
|
## YAML Frontmatter
|
||||||
|
|
||||||
|
### Invalid Syntax
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# BAD: Mixed list and map
|
||||||
|
metadata:
|
||||||
|
references:
|
||||||
|
triggers: a, b, c
|
||||||
|
- item1
|
||||||
|
- item2
|
||||||
|
|
||||||
|
# GOOD: Consistent structure
|
||||||
|
metadata:
|
||||||
|
triggers: a, b, c
|
||||||
|
references:
|
||||||
|
- item1
|
||||||
|
- item2
|
||||||
|
```
|
||||||
|
|
||||||
|
### Multiline Description
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# BAD: Line breaks create parsing errors
|
||||||
|
description: Use when creating skills.
|
||||||
|
Also for updating.
|
||||||
|
|
||||||
|
# GOOD: Use YAML multiline syntax
|
||||||
|
description: >-
|
||||||
|
Use when creating or updating skills.
|
||||||
|
Triggers: new skill, update skill
|
||||||
|
```
|
||||||
|
|
||||||
|
## Naming
|
||||||
|
|
||||||
|
### Directory Must Match `name` Field
|
||||||
|
|
||||||
|
```
|
||||||
|
# BAD
|
||||||
|
directory: my-skill/
|
||||||
|
name: mySkill # Mismatch!
|
||||||
|
|
||||||
|
# GOOD
|
||||||
|
directory: my-skill/
|
||||||
|
name: my-skill # Exact match
|
||||||
|
```
|
||||||
|
|
||||||
|
### SKILL.md Must Be ALL CAPS
|
||||||
|
|
||||||
|
```
|
||||||
|
# BAD
|
||||||
|
skill.md
|
||||||
|
Skill.md
|
||||||
|
|
||||||
|
# GOOD
|
||||||
|
SKILL.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## Discovery
|
||||||
|
|
||||||
|
### Description = Triggers, NOT Workflow
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# BAD: Agent reads this and skips the full skill
|
||||||
|
description: Analyzes code, finds bugs, suggests fixes
|
||||||
|
|
||||||
|
# GOOD: Agent reads full skill to understand workflow
|
||||||
|
description: Use when debugging errors or reviewing code quality
|
||||||
|
```
|
||||||
|
|
||||||
|
### Pre-Violation Triggers for Discipline Skills
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# BAD: Triggers AFTER violation
|
||||||
|
description: Use when you forgot to write tests
|
||||||
|
|
||||||
|
# GOOD: Triggers BEFORE violation
|
||||||
|
description: Use when implementing any feature, before writing code
|
||||||
|
```
|
||||||
|
|
||||||
|
## Token Efficiency
|
||||||
|
|
||||||
|
### Skill Loaded Every Conversation = Token Drain
|
||||||
|
|
||||||
|
- Frequently-loaded skills: <200 words
|
||||||
|
- All others: <500 words
|
||||||
|
- Move details to `references/` files
|
||||||
|
|
||||||
|
### Don't Duplicate CLI Help
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# BAD: 50 lines documenting all flags
|
||||||
|
|
||||||
|
# GOOD: One line
|
||||||
|
Run `mytool --help` for all options.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Anti-Rationalization (Discipline Skills Only)
|
||||||
|
|
||||||
|
### Agents Are Smart at Finding Loopholes
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# BAD: Trust agents will "get the spirit"
|
||||||
|
Write test before code.
|
||||||
|
|
||||||
|
# GOOD: Close every loophole explicitly
|
||||||
|
Write test before code.
|
||||||
|
|
||||||
|
**No exceptions:**
|
||||||
|
- Don't keep code as "reference"
|
||||||
|
- Don't "adapt" existing code
|
||||||
|
- Delete means delete
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build Rationalization Table
|
||||||
|
|
||||||
|
Every excuse from baseline testing goes in the table:
|
||||||
|
|
||||||
|
| Excuse | Reality |
|
||||||
|
|--------|---------|
|
||||||
|
| "Too simple to test" | Simple code breaks. Test takes 30 seconds. |
|
||||||
|
| "I'll test after" | Tests-after prove nothing immediately. |
|
||||||
|
|
||||||
|
## Cross-References
|
||||||
|
|
||||||
|
### Keep References One Level Deep
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# BAD: Nested chain (A -> B -> C)
|
||||||
|
See [patterns.md] -> which links to [advanced.md] -> which links to [deep.md]
|
||||||
|
|
||||||
|
# GOOD: Flat (A -> B, A -> C)
|
||||||
|
See [patterns.md] and [advanced.md]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Never Force-Load with @
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# BAD: Burns context immediately
|
||||||
|
@skills/my-skill/SKILL.md
|
||||||
|
|
||||||
|
# GOOD: Agent loads when needed
|
||||||
|
See [my-skill] for details.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Tier Selection
|
||||||
|
|
||||||
|
### Don't Overthink Tier Choice
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# BAD: Starting with Tier 3 "just in case"
|
||||||
|
# Result: Wasted effort, empty reference files
|
||||||
|
|
||||||
|
# GOOD: Start with Tier 1, upgrade when needed
|
||||||
|
# Can always add references/ later
|
||||||
|
```
|
||||||
|
|
||||||
|
### Signals You Need to Upgrade
|
||||||
|
|
||||||
|
| Signal | Action |
|
||||||
|
|--------|--------|
|
||||||
|
| SKILL.md > 200 lines | -> Tier 2 |
|
||||||
|
| 3+ related sub-topics | -> Tier 2 |
|
||||||
|
| 10+ products/services | -> Tier 3 |
|
||||||
|
| "I need X" vs "I want Y" | -> Tier 3 decision trees |
|
||||||
86
.skills/writing-skills/persuasion-principles.md
Normal file
86
.skills/writing-skills/persuasion-principles.md
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
# Persuasion Principles for Skill Design
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
LLMs respond to the same persuasion principles as humans. Understanding this psychology helps you design more effective skills - not to manipulate, but to ensure critical practices are followed even under pressure.
|
||||||
|
|
||||||
|
**Research foundation:** Meincke et al. (2025) tested 7 persuasion principles with N=28,000 AI conversations. Persuasion techniques more than doubled compliance rates (33% to 72%, p < .001).
|
||||||
|
|
||||||
|
## The Seven Principles
|
||||||
|
|
||||||
|
### 1. Authority
|
||||||
|
**What it is:** Deference to expertise, credentials, or official sources.
|
||||||
|
|
||||||
|
**How it works in skills:**
|
||||||
|
- Imperative language: "YOU MUST", "Never", "Always"
|
||||||
|
- Non-negotiable framing: "No exceptions"
|
||||||
|
- Eliminates decision fatigue and rationalization
|
||||||
|
|
||||||
|
**When to use:**
|
||||||
|
- Discipline-enforcing skills (TDD, verification requirements)
|
||||||
|
- Safety-critical practices
|
||||||
|
- Established best practices
|
||||||
|
|
||||||
|
### 2. Commitment
|
||||||
|
**What it is:** Consistency with prior actions, statements, or public declarations.
|
||||||
|
|
||||||
|
**How it works in skills:**
|
||||||
|
- Require announcements: "Announce skill usage"
|
||||||
|
- Force explicit choices: "Choose A, B, or C"
|
||||||
|
- Use tracking: TodoWrite for checklists
|
||||||
|
|
||||||
|
### 3. Scarcity
|
||||||
|
**What it is:** Urgency from time limits or limited availability.
|
||||||
|
|
||||||
|
**How it works in skills:**
|
||||||
|
- Time-bound requirements: "Before proceeding"
|
||||||
|
- Sequential dependencies: "Immediately after X"
|
||||||
|
- Prevents procrastination
|
||||||
|
|
||||||
|
### 4. Social Proof
|
||||||
|
**What it is:** Conformity to what others do or what's considered normal.
|
||||||
|
|
||||||
|
**How it works in skills:**
|
||||||
|
- Universal patterns: "Every time", "Always"
|
||||||
|
- Failure modes: "X without Y = failure"
|
||||||
|
- Establishes norms
|
||||||
|
|
||||||
|
### 5. Unity
|
||||||
|
**What it is:** Shared identity, "we-ness", in-group belonging.
|
||||||
|
|
||||||
|
**How it works in skills:**
|
||||||
|
- Collaborative language: "our codebase", "we're colleagues"
|
||||||
|
- Shared goals: "we both want quality"
|
||||||
|
|
||||||
|
### 6. Reciprocity
|
||||||
|
**What it is:** Obligation to return benefits received.
|
||||||
|
- Use sparingly - can feel manipulative
|
||||||
|
- Rarely needed in skills
|
||||||
|
|
||||||
|
### 7. Liking
|
||||||
|
**What it is:** Preference for cooperating with those we like.
|
||||||
|
- **DON'T USE for compliance**
|
||||||
|
- Conflicts with honest feedback culture
|
||||||
|
|
||||||
|
## Principle Combinations by Skill Type
|
||||||
|
|
||||||
|
| Skill Type | Use | Avoid |
|
||||||
|
|------------|-----|-------|
|
||||||
|
| Discipline-enforcing | Authority + Commitment + Social Proof | Liking, Reciprocity |
|
||||||
|
| Guidance/technique | Moderate Authority + Unity | Heavy authority |
|
||||||
|
| Collaborative | Unity + Commitment | Authority, Liking |
|
||||||
|
| Reference | Clarity only | All persuasion |
|
||||||
|
|
||||||
|
## Ethical Use
|
||||||
|
|
||||||
|
**Legitimate:**
|
||||||
|
- Ensuring critical practices are followed
|
||||||
|
- Creating effective documentation
|
||||||
|
- Preventing predictable failures
|
||||||
|
|
||||||
|
**The test:** Would this technique serve the user's genuine interests if they fully understood it?
|
||||||
|
|
||||||
|
## Research Citations
|
||||||
|
|
||||||
|
**Cialdini, R. B. (2021).** *Influence: The Psychology of Persuasion (New and Expanded).* Harper Business.
|
||||||
|
**Meincke, L., et al. (2025).** Call Me A Jerk: Persuading AI to Comply with Objectionable Requests. University of Pennsylvania.
|
||||||
|
|
@ -0,0 +1,85 @@
|
||||||
|
# Anti-Rationalization Guide
|
||||||
|
|
||||||
|
Techniques for bulletproofing skills against agent rationalization.
|
||||||
|
|
||||||
|
## The Problem
|
||||||
|
|
||||||
|
Discipline-enforcing skills face a unique challenge: smart agents under pressure will find loopholes.
|
||||||
|
|
||||||
|
## Technique 1: Close Every Loophole Explicitly
|
||||||
|
|
||||||
|
Don't just state the rule - forbid specific workarounds.
|
||||||
|
|
||||||
|
### Bad Example
|
||||||
|
```markdown
|
||||||
|
Write code before test? Delete it.
|
||||||
|
```
|
||||||
|
|
||||||
|
### Good Example
|
||||||
|
```markdown
|
||||||
|
Write code before test? Delete it. Start over.
|
||||||
|
|
||||||
|
**No exceptions**:
|
||||||
|
- Don't keep it as "reference"
|
||||||
|
- Don't "adapt" it while writing tests
|
||||||
|
- Don't look at it
|
||||||
|
- Delete means delete
|
||||||
|
```
|
||||||
|
|
||||||
|
## Technique 2: Address "Spirit vs Letter" Arguments
|
||||||
|
|
||||||
|
Add foundational principle early:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
**Violating the letter of the rules is violating the spirit of the rules.**
|
||||||
|
```
|
||||||
|
|
||||||
|
## Technique 3: Build Rationalization Table
|
||||||
|
|
||||||
|
| Excuse | Reality |
|
||||||
|
|--------|---------|
|
||||||
|
| "Too simple to test" | Simple code breaks. Test takes 30 seconds. |
|
||||||
|
| "I'll test after" | Tests passing immediately prove nothing. |
|
||||||
|
| "Spirit not ritual" | The letter IS the spirit. |
|
||||||
|
|
||||||
|
## Technique 4: Create Red Flags List
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## Red Flags - STOP and Start Over
|
||||||
|
- Code before test
|
||||||
|
- "I already manually tested it"
|
||||||
|
- "This is different because..."
|
||||||
|
|
||||||
|
**All of these mean**: Delete code. Start over.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Technique 5: Use Strong Language
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Weak (invites rationalization)
|
||||||
|
You should write tests first.
|
||||||
|
|
||||||
|
# Strong (no wiggle room)
|
||||||
|
ALWAYS write test first.
|
||||||
|
NEVER write code before test.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Technique 6: Provide Escape Hatch for Legitimate Cases
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
## When NOT to Use
|
||||||
|
- Spike solutions (throwaway exploratory code)
|
||||||
|
- One-time scripts deleting in 1 hour
|
||||||
|
|
||||||
|
**Everything else**: Follow the rule. No exceptions.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Complete Bulletproofing Checklist
|
||||||
|
|
||||||
|
- [ ] Forbidden each specific workaround explicitly?
|
||||||
|
- [ ] Added "spirit vs letter" principle?
|
||||||
|
- [ ] Built rationalization table from baseline tests?
|
||||||
|
- [ ] Created red flags list?
|
||||||
|
- [ ] Used strong language (ALWAYS/NEVER)?
|
||||||
|
- [ ] Provided explicit escape hatch?
|
||||||
|
- [ ] Description includes pre-violation symptoms?
|
||||||
90
.skills/writing-skills/references/cso/README.md
Normal file
90
.skills/writing-skills/references/cso/README.md
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
# CSO Guide - Claude Search Optimization
|
||||||
|
|
||||||
|
Advanced techniques for making skills discoverable by agents.
|
||||||
|
|
||||||
|
## The Discovery Problem
|
||||||
|
|
||||||
|
You have 100+ skills. Agent receives a task. How does it find the RIGHT skill?
|
||||||
|
|
||||||
|
**Answer**: The `description` field.
|
||||||
|
|
||||||
|
## Critical Rule: Description = Triggers, NOT Workflow
|
||||||
|
|
||||||
|
### The Trap
|
||||||
|
|
||||||
|
When description summarizes workflow, agents take a shortcut.
|
||||||
|
|
||||||
|
**Real example that failed**:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Agent did ONE review instead of TWO
|
||||||
|
description: Code review between tasks
|
||||||
|
|
||||||
|
# Skill body had flowchart showing TWO reviews
|
||||||
|
```
|
||||||
|
|
||||||
|
**Why it failed**: Agent read description, thought "code review between tasks means one review", never read the flowchart.
|
||||||
|
|
||||||
|
**Fix**:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Agent now reads full skill and follows flowchart
|
||||||
|
description: Use when executing implementation plans with independent tasks
|
||||||
|
```
|
||||||
|
|
||||||
|
### The Pattern
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# BAD: Workflow summary
|
||||||
|
description: Analyzes git diff, generates commit message in conventional format
|
||||||
|
|
||||||
|
# GOOD: Trigger conditions only
|
||||||
|
description: Use when generating commit messages or reviewing staged changes
|
||||||
|
```
|
||||||
|
|
||||||
|
## Token Efficiency
|
||||||
|
|
||||||
|
**Target word counts**:
|
||||||
|
- Frequently-loaded skills: <200 words total
|
||||||
|
- Other skills: <500 words
|
||||||
|
|
||||||
|
## Keyword Strategy
|
||||||
|
|
||||||
|
### Error Messages
|
||||||
|
Include EXACT error text users will see.
|
||||||
|
|
||||||
|
### Symptoms
|
||||||
|
Use words users naturally say: "flaky", "hangs", "slow", "timeout", "race condition"
|
||||||
|
|
||||||
|
### Tools & Commands
|
||||||
|
Actual names, not descriptions: "pytest", not "Python testing"
|
||||||
|
|
||||||
|
### Synonyms
|
||||||
|
Cover multiple ways to describe same thing: timeout/hang/freeze
|
||||||
|
|
||||||
|
## Description Template
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
description: "Use when [SPECIFIC TRIGGER]."
|
||||||
|
metadata:
|
||||||
|
triggers: [error1], [symptom2], [tool3]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Third Person Rule
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# BAD: First person
|
||||||
|
description: "I can help you with async tests"
|
||||||
|
|
||||||
|
# GOOD: Third person
|
||||||
|
description: "Handles async tests with race conditions"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Verification Checklist
|
||||||
|
|
||||||
|
- [ ] Description starts with "Use when..."?
|
||||||
|
- [ ] Description is <500 characters?
|
||||||
|
- [ ] Description lists ONLY triggers, not workflow?
|
||||||
|
- [ ] Includes 3+ keywords (errors/symptoms/tools)?
|
||||||
|
- [ ] Third person throughout?
|
||||||
|
- [ ] Name uses gerund or verb-first format?
|
||||||
87
.skills/writing-skills/references/standards/README.md
Normal file
87
.skills/writing-skills/references/standards/README.md
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
---
|
||||||
|
description: Standards and naming rules for creating agent skills.
|
||||||
|
metadata:
|
||||||
|
tags: [standards, naming, yaml, structure]
|
||||||
|
---
|
||||||
|
|
||||||
|
# Skill Development Guide
|
||||||
|
|
||||||
|
## Directory Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
skills/
|
||||||
|
{skill-name}/ # kebab-case, matches `name` field
|
||||||
|
SKILL.md # Required: main skill definition
|
||||||
|
references/ # Optional: supporting documentation
|
||||||
|
README.md # Sub-topic entry point
|
||||||
|
*.md # Additional files
|
||||||
|
```
|
||||||
|
|
||||||
|
## Naming Rules
|
||||||
|
|
||||||
|
| Element | Rule | Example |
|
||||||
|
|---------|------|---------|
|
||||||
|
| Directory | kebab-case, 1-64 chars | `react-best-practices` |
|
||||||
|
| `SKILL.md` | ALL CAPS, exact filename | `SKILL.md` (not `skill.md`) |
|
||||||
|
| `name` field | Must match directory name | `name: react-best-practices` |
|
||||||
|
|
||||||
|
## SKILL.md Structure
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
name: {skill-name}
|
||||||
|
description: >-
|
||||||
|
Use when [trigger condition].
|
||||||
|
metadata:
|
||||||
|
category: technique
|
||||||
|
triggers: keyword1, keyword2, error-text
|
||||||
|
---
|
||||||
|
|
||||||
|
# Skill Title
|
||||||
|
|
||||||
|
Brief description of what this skill does.
|
||||||
|
|
||||||
|
## When to Use
|
||||||
|
- Symptom or situation A
|
||||||
|
- Symptom or situation B
|
||||||
|
|
||||||
|
## How It Works
|
||||||
|
Step-by-step instructions or reference content.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
Concrete usage examples.
|
||||||
|
|
||||||
|
## Common Mistakes
|
||||||
|
What to avoid and why.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Description Best Practices
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# BAD: Workflow summary
|
||||||
|
description: Analyzes code, finds bugs, suggests fixes
|
||||||
|
|
||||||
|
# GOOD: Trigger conditions only
|
||||||
|
description: Use when debugging errors or reviewing code quality.
|
||||||
|
```
|
||||||
|
|
||||||
|
**Rules:**
|
||||||
|
- Start with "Use when..."
|
||||||
|
- Keep under 500 characters
|
||||||
|
- Use third person
|
||||||
|
|
||||||
|
## Context Efficiency
|
||||||
|
|
||||||
|
| Guideline | Reason |
|
||||||
|
|-----------|--------|
|
||||||
|
| Keep SKILL.md < 500 lines | Reduces context consumption |
|
||||||
|
| Put details in supporting files | Agent reads only what's needed |
|
||||||
|
| Use tables for reference data | More compact than prose |
|
||||||
|
|
||||||
|
## Verification Checklist
|
||||||
|
|
||||||
|
- [ ] `name` matches directory name?
|
||||||
|
- [ ] `SKILL.md` is ALL CAPS?
|
||||||
|
- [ ] Description starts with "Use when..."?
|
||||||
|
- [ ] Under 500 lines?
|
||||||
|
- [ ] Tested with real scenarios?
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
# SKILL.md Metadata Standard
|
||||||
|
|
||||||
|
Official frontmatter fields.
|
||||||
|
|
||||||
|
## Required Fields
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
name: skill-name
|
||||||
|
description: >-
|
||||||
|
Use when [trigger condition].
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
| Field | Rules |
|
||||||
|
|-------|-------|
|
||||||
|
| `name` | 1-64 chars, lowercase, hyphens only, must match directory name |
|
||||||
|
| `description` | 1-1024 chars, should describe when to use |
|
||||||
|
|
||||||
|
## Optional Fields
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
name: skill-name
|
||||||
|
description: Purpose and triggers.
|
||||||
|
metadata:
|
||||||
|
category: "reference"
|
||||||
|
version: "1.0.0"
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
## Name Validation
|
||||||
|
|
||||||
|
```regex
|
||||||
|
^[a-z0-9]+(-[a-z0-9]+)*$
|
||||||
|
```
|
||||||
|
|
||||||
|
**Valid**: `my-skill`, `git-release`, `tdd`
|
||||||
|
**Invalid**: `My-Skill`, `my_skill`, `-my-skill`
|
||||||
54
.skills/writing-skills/references/templates/discipline.md
Normal file
54
.skills/writing-skills/references/templates/discipline.md
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
---
|
||||||
|
name: discipline-name
|
||||||
|
description: >-
|
||||||
|
Use when [BEFORE violation].
|
||||||
|
metadata:
|
||||||
|
category: discipline
|
||||||
|
triggers: new feature, code change, implementation
|
||||||
|
---
|
||||||
|
|
||||||
|
# Rule Name
|
||||||
|
|
||||||
|
## Iron Law
|
||||||
|
|
||||||
|
**[SINGLE SENTENCE ABSOLUTE RULE]**
|
||||||
|
|
||||||
|
Violating the letter IS violating the spirit.
|
||||||
|
|
||||||
|
## The Rule
|
||||||
|
|
||||||
|
1. ALWAYS [step 1]
|
||||||
|
2. NEVER [step 2]
|
||||||
|
3. [Step 3]
|
||||||
|
|
||||||
|
## Violations
|
||||||
|
|
||||||
|
[Action before rule]? **Delete it. Start over.**
|
||||||
|
|
||||||
|
**No exceptions:**
|
||||||
|
- Don't keep it as "reference"
|
||||||
|
- Don't "adapt" it
|
||||||
|
- Delete means delete
|
||||||
|
|
||||||
|
## Common Rationalizations
|
||||||
|
|
||||||
|
| Excuse | Reality |
|
||||||
|
|--------|---------|
|
||||||
|
| "Too simple" | Simple code breaks. Rule takes 30 seconds. |
|
||||||
|
| "I'll do it after" | After = never. Do it now. |
|
||||||
|
| "Spirit not ritual" | The ritual IS the spirit. |
|
||||||
|
|
||||||
|
## Red Flags - STOP
|
||||||
|
|
||||||
|
- [Flag 1]
|
||||||
|
- [Flag 2]
|
||||||
|
- "This is different because..."
|
||||||
|
|
||||||
|
**All mean:** Delete. Start over.
|
||||||
|
|
||||||
|
## Valid Exceptions
|
||||||
|
|
||||||
|
- [Exception 1]
|
||||||
|
- [Exception 2]
|
||||||
|
|
||||||
|
**Everything else:** Follow the rule.
|
||||||
48
.skills/writing-skills/references/templates/pattern.md
Normal file
48
.skills/writing-skills/references/templates/pattern.md
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
---
|
||||||
|
name: pattern-name
|
||||||
|
description: >-
|
||||||
|
Use when [recognizable symptom].
|
||||||
|
metadata:
|
||||||
|
category: pattern
|
||||||
|
triggers: complexity, hard-to-follow, nested
|
||||||
|
---
|
||||||
|
|
||||||
|
# Pattern Name
|
||||||
|
|
||||||
|
## The Pattern
|
||||||
|
|
||||||
|
[1-2 sentence core idea]
|
||||||
|
|
||||||
|
## Recognition Signs
|
||||||
|
|
||||||
|
- [Sign that pattern applies]
|
||||||
|
- [Another sign]
|
||||||
|
- [Code smell]
|
||||||
|
|
||||||
|
## Before
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Complex/problematic
|
||||||
|
function before() {
|
||||||
|
// nested, confusing
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## After
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Clean/improved
|
||||||
|
function after() {
|
||||||
|
// flat, clear
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## When NOT to Use
|
||||||
|
|
||||||
|
- [Over-engineering case]
|
||||||
|
- [Simple case that doesn't need it]
|
||||||
|
|
||||||
|
## Impact
|
||||||
|
|
||||||
|
**Before:** [Problem metric]
|
||||||
|
**After:** [Improved metric]
|
||||||
35
.skills/writing-skills/references/templates/reference.md
Normal file
35
.skills/writing-skills/references/templates/reference.md
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
name: reference-name
|
||||||
|
description: >-
|
||||||
|
Use when working with [domain].
|
||||||
|
metadata:
|
||||||
|
category: reference
|
||||||
|
triggers: tool, api, specific-terms
|
||||||
|
---
|
||||||
|
|
||||||
|
# Reference Name
|
||||||
|
|
||||||
|
## Quick Reference
|
||||||
|
|
||||||
|
| Command | Purpose |
|
||||||
|
|---------|---------|
|
||||||
|
| `cmd1` | Does X |
|
||||||
|
| `cmd2` | Does Y |
|
||||||
|
|
||||||
|
## Common Patterns
|
||||||
|
|
||||||
|
**Pattern A:**
|
||||||
|
```bash
|
||||||
|
example command
|
||||||
|
```
|
||||||
|
|
||||||
|
**Pattern B:**
|
||||||
|
```bash
|
||||||
|
another example
|
||||||
|
```
|
||||||
|
|
||||||
|
## Detailed Docs
|
||||||
|
|
||||||
|
For more options, run `--help` or see:
|
||||||
|
- patterns.md
|
||||||
|
- examples.md
|
||||||
59
.skills/writing-skills/references/templates/technique.md
Normal file
59
.skills/writing-skills/references/templates/technique.md
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
---
|
||||||
|
name: technique-name
|
||||||
|
description: Use when [specific symptom].
|
||||||
|
metadata:
|
||||||
|
category: technique
|
||||||
|
triggers: error-text, symptom, tool-name
|
||||||
|
---
|
||||||
|
|
||||||
|
# Technique Name
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
[1-2 sentence core principle]
|
||||||
|
|
||||||
|
## When to Use
|
||||||
|
|
||||||
|
- [Symptom A]
|
||||||
|
- [Symptom B]
|
||||||
|
- [Error message text]
|
||||||
|
|
||||||
|
**NOT for:**
|
||||||
|
- [When to avoid]
|
||||||
|
|
||||||
|
## The Problem
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// Bad example
|
||||||
|
function badCode() {
|
||||||
|
// problematic pattern
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## The Solution
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// Good example
|
||||||
|
function goodCode() {
|
||||||
|
// improved pattern
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Step-by-Step
|
||||||
|
|
||||||
|
1. [First step]
|
||||||
|
2. [Second step]
|
||||||
|
3. [Final step]
|
||||||
|
|
||||||
|
## Quick Reference
|
||||||
|
|
||||||
|
| Scenario | Approach |
|
||||||
|
|----------|----------|
|
||||||
|
| Case A | Solution A |
|
||||||
|
| Case B | Solution B |
|
||||||
|
|
||||||
|
## Common Mistakes
|
||||||
|
|
||||||
|
**Mistake 1:** [Description]
|
||||||
|
- Wrong: `bad code`
|
||||||
|
- Right: `good code`
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Platform Name Skill
|
||||||
|
|
||||||
|
Template for complex Tier 3 skills.
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
skill/
|
||||||
|
SKILL.md # Dispatcher
|
||||||
|
references/
|
||||||
|
topic/
|
||||||
|
README.md # Overview
|
||||||
|
api.md # API Reference
|
||||||
|
config.md # Configuration
|
||||||
|
patterns.md # Recipes
|
||||||
|
gotchas.md # Critical Errors
|
||||||
|
```
|
||||||
66
.skills/writing-skills/references/testing/README.md
Normal file
66
.skills/writing-skills/references/testing/README.md
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
# Testing Guide - TDD for Skills
|
||||||
|
|
||||||
|
Complete methodology for testing skills using RED-GREEN-REFACTOR cycle.
|
||||||
|
|
||||||
|
## Testing All Skill Types
|
||||||
|
|
||||||
|
### Discipline-Enforcing Skills (rules/requirements)
|
||||||
|
|
||||||
|
**Test with**:
|
||||||
|
- Academic questions: Do they understand the rules?
|
||||||
|
- Pressure scenarios: Do they comply under stress?
|
||||||
|
- Multiple pressures combined: time + sunk cost + exhaustion
|
||||||
|
|
||||||
|
**Success criteria**: Agent follows rule under maximum pressure
|
||||||
|
|
||||||
|
### Technique Skills (how-to guides)
|
||||||
|
|
||||||
|
**Test with**:
|
||||||
|
- Application scenarios: Can they apply the technique correctly?
|
||||||
|
- Variation scenarios: Do they handle edge cases?
|
||||||
|
- Missing information tests: Do instructions have gaps?
|
||||||
|
|
||||||
|
**Success criteria**: Agent successfully applies technique to new scenario
|
||||||
|
|
||||||
|
### Pattern Skills (mental models)
|
||||||
|
|
||||||
|
**Test with**:
|
||||||
|
- Recognition scenarios: Do they recognize when pattern applies?
|
||||||
|
- Counter-examples: Do they know when NOT to apply?
|
||||||
|
|
||||||
|
**Success criteria**: Agent correctly identifies when/how to apply pattern
|
||||||
|
|
||||||
|
### Reference Skills (documentation/APIs)
|
||||||
|
|
||||||
|
**Test with**:
|
||||||
|
- Retrieval scenarios: Can they find the right information?
|
||||||
|
- Gap testing: Are common use cases covered?
|
||||||
|
|
||||||
|
**Success criteria**: Agent finds and correctly applies reference information
|
||||||
|
|
||||||
|
## Pressure Types for Testing
|
||||||
|
|
||||||
|
| Pressure | Example |
|
||||||
|
|----------|---------|
|
||||||
|
| Time | "You have 5 minutes to complete this task" |
|
||||||
|
| Sunk cost | "You already spent 2 hours on this" |
|
||||||
|
| Authority | "Senior developer said to skip tests" |
|
||||||
|
| Exhaustion | "This is the 10th task today" |
|
||||||
|
|
||||||
|
## Complete Test Checklist
|
||||||
|
|
||||||
|
**Baseline (RED)**:
|
||||||
|
- [ ] Designed 3+ pressure scenarios
|
||||||
|
- [ ] Ran scenarios WITHOUT skill
|
||||||
|
- [ ] Documented verbatim agent responses
|
||||||
|
|
||||||
|
**Implementation (GREEN)**:
|
||||||
|
- [ ] Skill addresses SPECIFIC baseline failures
|
||||||
|
- [ ] Re-ran scenarios WITH skill
|
||||||
|
- [ ] Agent complied in all scenarios
|
||||||
|
|
||||||
|
**Bulletproofing (REFACTOR)**:
|
||||||
|
- [ ] Tested with combined pressures
|
||||||
|
- [ ] Found and documented new rationalizations
|
||||||
|
- [ ] Added explicit counters
|
||||||
|
- [ ] Re-tested until no more loopholes
|
||||||
30
.skills/writing-skills/references/tier-1-simple/README.md
Normal file
30
.skills/writing-skills/references/tier-1-simple/README.md
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
---
|
||||||
|
description: When to use Tier 1 (Simple) skill architecture.
|
||||||
|
metadata:
|
||||||
|
tags: [tier-1, simple, single-file]
|
||||||
|
---
|
||||||
|
|
||||||
|
# Tier 1: Simple Skills
|
||||||
|
|
||||||
|
Single-file skills for focused, specific purposes.
|
||||||
|
|
||||||
|
## When to Use
|
||||||
|
|
||||||
|
- **Single concept**: One technique, one pattern, one reference
|
||||||
|
- **Under 200 lines**: Can fit comfortably in one file
|
||||||
|
- **No complex decision logic**: User knows exactly what they need
|
||||||
|
- **Frequently loaded**: Needs minimal token footprint
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
my-skill/
|
||||||
|
SKILL.md # Everything in one file
|
||||||
|
```
|
||||||
|
|
||||||
|
## Checklist
|
||||||
|
|
||||||
|
- [ ] Fits in <200 lines
|
||||||
|
- [ ] Single focused purpose
|
||||||
|
- [ ] No need for `references/` directory
|
||||||
|
- [ ] Description uses "Use when..." pattern
|
||||||
52
.skills/writing-skills/references/tier-2-expanded/README.md
Normal file
52
.skills/writing-skills/references/tier-2-expanded/README.md
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
---
|
||||||
|
description: When to use Tier 2 (Expanded) skill architecture.
|
||||||
|
metadata:
|
||||||
|
tags: [tier-2, expanded, multi-file]
|
||||||
|
---
|
||||||
|
|
||||||
|
# Tier 2: Expanded Skills
|
||||||
|
|
||||||
|
Multi-file skills for complex topics with multiple sub-concepts.
|
||||||
|
|
||||||
|
## When to Use
|
||||||
|
|
||||||
|
- **Multiple related concepts**: Needs separation of concerns
|
||||||
|
- **200-1000 lines total**: Too big for one file
|
||||||
|
- **Needs reference files**: Patterns, examples, troubleshooting
|
||||||
|
- **Cross-linking**: Users need to navigate between sub-topics
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
my-skill/
|
||||||
|
SKILL.md # Overview + navigation
|
||||||
|
references/
|
||||||
|
core/
|
||||||
|
README.md # Main concept
|
||||||
|
patterns/
|
||||||
|
README.md # Usage patterns
|
||||||
|
troubleshooting/
|
||||||
|
README.md # Common issues
|
||||||
|
```
|
||||||
|
|
||||||
|
## Progressive Disclosure
|
||||||
|
|
||||||
|
1. **Metadata** (~100 tokens): Name + description loaded at startup
|
||||||
|
2. **SKILL.md** (<500 lines): Decision tree + index
|
||||||
|
3. **References** (as needed): Loaded only when user navigates
|
||||||
|
|
||||||
|
## Key Differences from Tier 1
|
||||||
|
|
||||||
|
| Aspect | Tier 1 | Tier 2 |
|
||||||
|
|--------|--------|--------|
|
||||||
|
| Files | 1 | 5-20 |
|
||||||
|
| Total lines | <200 | 200-1000 |
|
||||||
|
| Decision logic | None | Simple tree |
|
||||||
|
| Token cost | Minimal | Medium (progressive) |
|
||||||
|
|
||||||
|
## Checklist
|
||||||
|
|
||||||
|
- [ ] SKILL.md has clear navigation links
|
||||||
|
- [ ] Each `references/` subdir has README.md
|
||||||
|
- [ ] No circular references between files
|
||||||
|
- [ ] Decision tree points to specific files
|
||||||
51
.skills/writing-skills/references/tier-3-platform/README.md
Normal file
51
.skills/writing-skills/references/tier-3-platform/README.md
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
---
|
||||||
|
description: When to use Tier 3 (Platform) skill architecture for large platforms.
|
||||||
|
metadata:
|
||||||
|
tags: [tier-3, platform, enterprise]
|
||||||
|
---
|
||||||
|
|
||||||
|
# Tier 3: Platform Skills
|
||||||
|
|
||||||
|
Enterprise-grade skills for entire platforms (AWS, Cloudflare, Convex, etc).
|
||||||
|
|
||||||
|
## When to Use
|
||||||
|
|
||||||
|
- **Entire platform**: 10+ products/services
|
||||||
|
- **1000+ lines total**: Would overwhelm context if monolithic
|
||||||
|
- **Complex decision logic**: Users start with "I need X" not "I want product Y"
|
||||||
|
|
||||||
|
## The 5-File Pattern
|
||||||
|
|
||||||
|
Each product directory has exactly 5 files:
|
||||||
|
|
||||||
|
| File | Purpose | When to Load |
|
||||||
|
|------|---------|--------------|
|
||||||
|
| `README.md` | Overview, when to use | Always first |
|
||||||
|
| `api.md` | Runtime APIs, methods | Implementing features |
|
||||||
|
| `configuration.md` | Config, environment | Setting up |
|
||||||
|
| `patterns.md` | Common workflows | Best practices |
|
||||||
|
| `gotchas.md` | Pitfalls, limits | Debugging |
|
||||||
|
|
||||||
|
## Decision Trees
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
Need to store data?
|
||||||
|
Simple key-value -> kv/
|
||||||
|
Relational queries -> d1/
|
||||||
|
Large files/blobs -> r2/
|
||||||
|
Per-user state -> durable-objects/
|
||||||
|
```
|
||||||
|
|
||||||
|
## Progressive Disclosure in Action
|
||||||
|
|
||||||
|
- **Startup**: Only name + description (~100 tokens)
|
||||||
|
- **Activation**: SKILL.md with trees (<5000 tokens)
|
||||||
|
- **Navigation**: One product's 5 files (as needed)
|
||||||
|
|
||||||
|
## Checklist
|
||||||
|
|
||||||
|
- [ ] SKILL.md contains ONLY decision trees + index
|
||||||
|
- [ ] Each product has exactly 5 files
|
||||||
|
- [ ] Decision trees cover all "I need X" scenarios
|
||||||
|
- [ ] Cross-references stay one level deep
|
||||||
|
- [ ] Every product has `gotchas.md`
|
||||||
85
.skills/writing-skills/testing-skills-with-subagents.md
Normal file
85
.skills/writing-skills/testing-skills-with-subagents.md
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
# Testing Skills With Subagents
|
||||||
|
|
||||||
|
**Load this reference when:** creating or editing skills, before deployment, to verify they work under pressure and resist rationalization.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
**Testing skills is just TDD applied to process documentation.**
|
||||||
|
|
||||||
|
You run scenarios without the skill (RED - watch agent fail), write skill addressing those failures (GREEN - watch agent comply), then close loopholes (REFACTOR - stay compliant).
|
||||||
|
|
||||||
|
**Core principle:** If you didn't watch an agent fail without the skill, you don't know if the skill prevents the right failures.
|
||||||
|
|
||||||
|
## When to Use
|
||||||
|
|
||||||
|
Test skills that:
|
||||||
|
- Enforce discipline (TDD, testing requirements)
|
||||||
|
- Have compliance costs (time, effort, rework)
|
||||||
|
- Could be rationalized away ("just this once")
|
||||||
|
- Contradict immediate goals (speed over quality)
|
||||||
|
|
||||||
|
Don't test:
|
||||||
|
- Pure reference skills (API docs, syntax guides)
|
||||||
|
- Skills without rules to violate
|
||||||
|
- Skills agents have no incentive to bypass
|
||||||
|
|
||||||
|
## TDD Mapping for Skill Testing
|
||||||
|
|
||||||
|
| TDD Phase | Skill Testing | What You Do |
|
||||||
|
|-----------|---------------|-------------|
|
||||||
|
| **RED** | Baseline test | Run scenario WITHOUT skill, watch agent fail |
|
||||||
|
| **Verify RED** | Capture rationalizations | Document exact failures verbatim |
|
||||||
|
| **GREEN** | Write skill | Address specific baseline failures |
|
||||||
|
| **Verify GREEN** | Pressure test | Run scenario WITH skill, verify compliance |
|
||||||
|
| **REFACTOR** | Plug holes | Find new rationalizations, add counters |
|
||||||
|
| **Stay GREEN** | Re-verify | Test again, ensure still compliant |
|
||||||
|
|
||||||
|
## RED Phase: Baseline Testing (Watch It Fail)
|
||||||
|
|
||||||
|
**Goal:** Run test WITHOUT the skill - watch agent fail, document exact failures.
|
||||||
|
|
||||||
|
**Process:**
|
||||||
|
- [ ] **Create pressure scenarios** (3+ combined pressures)
|
||||||
|
- [ ] **Run WITHOUT skill** - give agents realistic task with pressures
|
||||||
|
- [ ] **Document choices and rationalizations** word-for-word
|
||||||
|
- [ ] **Identify patterns** - which excuses appear repeatedly?
|
||||||
|
- [ ] **Note effective pressures** - which scenarios trigger violations?
|
||||||
|
|
||||||
|
## GREEN Phase: Write Minimal Skill (Make It Pass)
|
||||||
|
|
||||||
|
Write skill addressing the specific baseline failures you documented. Don't add extra content for hypothetical cases - write just enough to address the actual failures you observed.
|
||||||
|
|
||||||
|
Run same scenarios WITH skill. Agent should now comply.
|
||||||
|
|
||||||
|
If agent still fails: skill is unclear or incomplete. Revise and re-test.
|
||||||
|
|
||||||
|
## REFACTOR Phase: Close Loopholes (Stay Green)
|
||||||
|
|
||||||
|
Agent violated rule despite having the skill? Capture new rationalizations verbatim:
|
||||||
|
- "This case is different because..."
|
||||||
|
- "I'm following the spirit not the letter"
|
||||||
|
- "Being pragmatic means adapting"
|
||||||
|
- "Deleting X hours is wasteful"
|
||||||
|
|
||||||
|
**Document every excuse.** These become your rationalization table.
|
||||||
|
|
||||||
|
## Testing Checklist (TDD for Skills)
|
||||||
|
|
||||||
|
**RED Phase:**
|
||||||
|
- [ ] Created pressure scenarios (3+ combined pressures)
|
||||||
|
- [ ] Ran scenarios WITHOUT skill (baseline)
|
||||||
|
- [ ] Documented agent failures and rationalizations verbatim
|
||||||
|
|
||||||
|
**GREEN Phase:**
|
||||||
|
- [ ] Wrote skill addressing specific baseline failures
|
||||||
|
- [ ] Ran scenarios WITH skill
|
||||||
|
- [ ] Agent now complies
|
||||||
|
|
||||||
|
**REFACTOR Phase:**
|
||||||
|
- [ ] Identified NEW rationalizations from testing
|
||||||
|
- [ ] Added explicit counters for each loophole
|
||||||
|
- [ ] Updated rationalization table
|
||||||
|
- [ ] Updated red flags list
|
||||||
|
- [ ] Re-tested - agent still complies
|
||||||
|
- [ ] Meta-tested to verify clarity
|
||||||
|
- [ ] Agent follows rule under maximum pressure
|
||||||
Loading…
Add table
Add a link
Reference in a new issue